package com.kexio.enterprise.observability.tracing.query;

import com.kexio.enterprise.observability.tracing.enums.SpanStatus;

import java.time.LocalDateTime;
import java.util.Map;

/**
 * 追踪查询条件
 * 
 * @author Kexio
 * @since 1.0.0
 */
public class TracingQueryCriteria {
    private String traceId;
    private String operationName;
    private String serviceName;
    private Map<String, String> tags;
    private LocalDateTime startTime;
    private LocalDateTime endTime;
    private Long minDuration;
    private Long maxDuration;
    private SpanStatus status;
    private int limit;

    public TracingQueryCriteria() {
        this.limit = 100;
    }

    // Getters and Setters
    public String getTraceId() { return traceId; }
    public void setTraceId(String traceId) { this.traceId = traceId; }
    
    public String getOperationName() { return operationName; }
    public void setOperationName(String operationName) { this.operationName = operationName; }
    
    public String getServiceName() { return serviceName; }
    public void setServiceName(String serviceName) { this.serviceName = serviceName; }
    
    public Map<String, String> getTags() { return tags; }
    public void setTags(Map<String, String> tags) { this.tags = tags; }
    
    public LocalDateTime getStartTime() { return startTime; }
    public void setStartTime(LocalDateTime startTime) { this.startTime = startTime; }
    
    public LocalDateTime getEndTime() { return endTime; }
    public void setEndTime(LocalDateTime endTime) { this.endTime = endTime; }
    
    public Long getMinDuration() { return minDuration; }
    public void setMinDuration(Long minDuration) { this.minDuration = minDuration; }
    
    public Long getMaxDuration() { return maxDuration; }
    public void setMaxDuration(Long maxDuration) { this.maxDuration = maxDuration; }
    
    public SpanStatus getStatus() { return status; }
    public void setStatus(SpanStatus status) { this.status = status; }
    
    public int getLimit() { return limit; }
    public void setLimit(int limit) { this.limit = limit; }
}
